home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 1.iso
/
ARGONET
/
PD
/
FILER
/
TARSRC.SPK
/
c
/
freespace
< prev
next >
Wrap
Text File
|
1991-01-06
|
1KB
|
61 lines
#include <limits.h>
#include <stdlib.h>
#include <stdio.h>
#include "os.h"
void ChkError(os_error *Error) {
if (Error != NULL) {
fprintf(stderr,"OS-Error: %s\n",Error->errmess);
exit(1);
}
} /* ChkError */
int FreeSpace(char *FileName, int InitLen, int InitInc) {
int FileHandle,reallen,len,inc;
os_error *Error;
os_regset Regs;
do {
Regs.r[0] = 0x83;
Regs.r[1] = (int)FileName;
ChkError(os_find(&Regs));
FileHandle = Regs.r[0];
Regs.r[0] = 6;
Regs.r[1] = FileHandle;
len = InitLen;
reallen = InitLen;
inc = InitInc;
do {
Regs.r[2] = len + inc;
Error = os_args(&Regs);
if (Error == NULL) {
fprintf(stderr,"\rFree Space = %d",reallen);
reallen = Regs.r[2];
len = len + inc;
if (reallen < len)
inc = 0;
} else {
inc = 0;
}
} while (inc > 0);
Regs.r[0] = 0;
Regs.r[1] = FileHandle;
ChkError(os_find(&Regs));
InitInc /= 4;
InitLen = reallen;
} while (InitInc > 1024);
remove(FileName);
return reallen;
} /* FreeSpace */
int main(int argc, char **argv) {
int Len;
Len = FreeSpace(argv[1],0,512000);
fprintf(stderr,"\rFree Space = %d\n",Len);
}